package com.gdust.hzx.feign.order;

import com.gdust.hzx.model.entity.order.OrderInfo;
import com.gdust.hzx.model.vo.common.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * 订单服务 Feign 客户端接口
 *
 * 用于通过 OpenFeign 调用远程订单服务的相关接口，提供订单查询与更新状态等功能。
 *
 * @Author syun
 * @Create 2024/12/27 14:54
 * @Version 1.0
 */
@FeignClient("service-order") // 指定远程服务名称
public interface OrderFeignClient {

    /**
     * 根据订单编号获取订单信息
     *
     * @param orderNo 订单编号，用于唯一标识订单
     * @return 返回与订单编号对应的订单信息对象 OrderInfo
     */
    @GetMapping("/api/order/orderInfo/auth/getOrderInfoByOrderNo/{orderNo}")
    public OrderInfo getOrderInfoByOrderNo(@PathVariable("orderNo") String orderNo);

    /**
     * 更新订单状态（支付完成）
     *
     * @param orderNo 订单编号，用于标识需要更新状态的订单
     * @param orderStatus 订单状态码，表示订单当前的业务状态
     * @return 返回 Result 对象，表示操作是否成功及相关信息
     */
//    @GetMapping("/api/order/orderInfo/auth/updateOrderStatusPayed/{orderNo}/{orderStatus}")
//    public Result updateOrderStatus(@PathVariable(value = "orderNo") String orderNo,
//                                    @PathVariable(value = "orderStatus") Integer orderStatus);

    //更新订单状态
    @GetMapping("/api/order/orderInfo/auth/updateOrderStatusPayed/{orderNo}/{orderStatus}")
    public Result updateOrderStatus(@PathVariable(value = "orderNo") String orderNo);
}
